import scrapy
# 需求 爬取每一个一级目录的二级目录数据
# 方案 声明回调函数 专门向二级目录发送请求 进行数据清洗 结合之前的 数据 进行链接保存
#

from ..items import *
class Douban2Spider(scrapy.Spider):
    name = 'douban2'
    allowed_domains = ['douban.com']
    start_urls = ['https://movie.douban.com/top250']

    def parse(self, response):
        # 获取整页的数据   获取共同节点 节点遍历 字段爬取  25个电影的共同节点
        # 注意 如果刻意获取节点不需要加上.get进行提取
        nodes=response.xpath('//div[@class="info"]')
        # 遍历 nodes
        for node in nodes:
            # 标题
            title=node.xpath('./div[1]/a/span[1]/text()').getall()
            # 链接
            link=node.xpath('./div[1]/a/@href').getall()
            # 评分
            score=node.xpath('./div[2]/div[1]/span[2]/text()').get()
            # 简评
            content=node.xpath('./div[2]/p[2]/span/text()').getall()
            if content ==[]:
                content=["电影没有影评!"]
            item=Douban2502Item()
            item["title"]=title[0]
            item["link"]=link[0]
            item["score"]=score
            item["content"]=content[0]
            print(link)
            # 这是scrapy模块的回调函数使用方法 至少传递两个参数  1url 2指定回调方法  3meta字典（传递item）
            # 注意指定回调方法不要加括号
            # demo自定义
            # yield item
            yield scrapy.Request(link[0],callback=self.second_parse,meta={"初识NLTK.py":item})
    #   自定义回调方法
    def second_parse(self,response):
        item=response.meta.get("初识NLTK.py")  #不会有meta.get("初识NLTK.py")提示
        contentsss=response.xpath('//*[@id="link-report"]/span[1]/span/text()').get()
        if contentsss =="null":
            pass
        item["contentsss"]=contentsss
        return item





